/* 子应用 */
const express = require('express');

const query = require('../pool');

const jwt=require('../modules/token');

const integral = express.Router();
//存入新用户积分
integral.get('/',async(req,res)=>{
  let obj=req.body;  //获取请求的数据
  let sql=`insert into cake_user (uid,user_integral) value (?,?);`
  let params=[obj.uid,obj.user_integral];
  let result=await query(sql,params)
  res.send({code:0,msg:'积分已存入'})
})

//获取当前用户积分和姓名
integral.get('/get?:uid',async(req,res)=>{
  let obj=req.query;  //获取请求数据
  let uid=jwt.verifytoken(obj[0]);
//console.log(uid)
  if(!uid){
    res.send({code:0,msg:'token无效'})
  }else{
    //从数据库获得用户的积分，姓名，头像数据，返回给前台，让前台去渲染界面
    let sql=`select user_integral,uname,user_icon from cake_user where uid=?;`
    let params=[uid.uid];
    let result=await query(sql,params)
  //console.log(result)
    res.send({code:1,msg:'获取用户积分数据成功',data:result})
  }
})
//更新用户积分数据
integral.get('/up',async(req,res)=>{
  //获取的前台接受的值
  let obj=req.query;
  //打印前台token的值可以不写
  // console.log(obj.token)
  //打印前台count的值可以不写
//console.log(obj.count)
  //编译token
  let integral=jwt.verifytoken(obj.token)
  if(!integral){
    res.send({code:0,msg:'token无效'})
  }else{
    //不知道的数据库命令可以去网上去找一下要去带值去修改数据库
  let sql=`update cake_user set user_integral=user_integral+${obj.count} where uid=${integral.uid};`
  let params=[obj.user_integral,obj.uid];
  let result=await query(sql,params)
  res.send({code:1,msg:'积分已更新'})
  }
  
})
//更新用户积分数据
integral.get('/upd',async(req,res)=>{
  //获取的前台接受的值
  let obj=req.query;
  //打印前台token的值可以不写
//console.log(obj.token)
  //打印前台subtract的值可以不写
//console.log(obj.subtract)
  //编译token
  let integral=jwt.verifytoken(obj.token)
  if(!integral){
    res.send({code:0,msg:'token无效'})
  }else{
    //不知道的数据库命令可以去网上去找一下要去带值去修改数据库
    let sql=`update cake_user set user_integral=user_integral-${obj.subtract} where uid=${integral.uid};`
    let params=[obj.user_integral,obj.uid];
    let result=await query(sql,params)
    res.send({code:0,msg:'积分已更新'})
  }
})
  // 更新积分并且存入优惠券
  integral.post('/update',async(req,res)=>{
    // 先判断是转盘获取还是积分兑换优惠券
    // 如果是兑换，那么方式method为1  转盘method为2
    let obj = req.body;
    // 先验证token
    let token = obj.token
    if(JSON.stringify(jwt.verifytoken(token))=='{}'){
      res.send({code:0,msg:'token失效了'})
    }else{
      // 兑换有两个动作  1.消耗积分  2.存入优惠券
      if(obj.method==1){
        let lid = obj.lid
        let uid = jwt.verifytoken(token).uid;
        // 消耗积分
        let sql = 'update cake_user cu left join user_laptop ul on ul.uid = cu.uid left join laptop l on l.lid = ul.lid set cu.user_integral = cu.user_integral - l.denominations where l.lid = ? and cu.uid = ?';
        let result = await query(sql,[lid,uid]);
        // 存优惠券
        let date = Date.parse(new Date());
        let startAt=date
      //console.log(date)
        let coupon_res = await query('insert into user_laptop (uid,lid,isUse) values (?,?,1)',[uid,lid])
        if(result.affectedRows==0||coupon_res.affectedRows==0){
          res.send({code:0,msg:'更新失败'})
        }else{
          res.send({code:1,msg:'更新成功'})
      }
      }
      // 转盘更新积分 
      if(obj.method==2){
        let obj = req.body
        let token_res = jwt.verifytoken(obj.token);
        if(JSON.stringify(token_res)=='{}'){
          res.send({code:0,msg:'token失效了'})
        }else{
          let sql = 'update cake_user set user_integral = user_integral + ? where uid = ?';
          let uid = token_res.uid;
          let result = await query(sql,[obj.score,uid])
          if(result.affectedRows==0){
            res.send({code:0,msg:'更新失败'})
          }else{
            res.send({code:1,msg:'积分更新成功'})
          }
        }
      }
    }
  })

//暴露
module.exports = integral;